package com.yy.pojo.base;

import java.io.Serializable;
import java.util.List;

/**
 * 系统菜单表
 * 预计数据量级：每年递增千级数据。
 * <p>
 * t_permission
 */
public class TPermission implements Comparable<TPermission>, Serializable {
    /**
     * t_permission.id
     */
    private String id;

    /**
     * 名称
     * <p>
     * t_permission.name
     */
    private String name;

    /**
     * 父ID
     * <p>
     * t_permission.parentid
     */
    private String parentid;

    /**
     * 顺序
     * <p>
     * t_permission.seq
     */
    private Integer seq;

    /**
     * 权限的级别 1只是功能菜单 2 实际权限
     * <p>
     * t_permission.level
     */
    private Integer level;

    /**
     * 权限路径
     * <p>
     * t_permission.url
     */
    private String url;

    /**
     * 描述
     * <p>
     * t_permission.remark
     */
    private String remark;

    /**
     * 认证编码 例如：user:create 表示拥有创建用户的权限
     * <p>
     * t_permission.authentication
     */
    private String authentication;

    /**
     * 子节点数据
     */
    private List<TPermission> childList;

    /**
     * 是否是父节点
     */
    private boolean isParent;

    /**
     * 树节点是否默认选中
     */
    private boolean checked;

    /**
     * t_permission.id
     *
     * @return t_permission.id
     */
    public String getId() {
        return id;
    }

    /**
     * t_permission.id
     *
     * @param id t_permission.id
     */
    public void setId(String id) {
        this.id = id == null ? null : id.trim();
    }

    /**
     * 名称
     * t_permission.name
     *
     * @return t_permission.name
     */
    public String getName() {
        return name;
    }

    /**
     * 名称
     * t_permission.name
     *
     * @param name t_permission.name
     */
    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    /**
     * 父ID
     * t_permission.parentid
     *
     * @return t_permission.parentid
     */
    public String getParentid() {
        return parentid;
    }

    /**
     * 父ID
     * t_permission.parentid
     *
     * @param parentid t_permission.parentid
     */
    public void setParentid(String parentid) {
        this.parentid = parentid == null ? null : parentid.trim();
    }

    /**
     * 顺序
     * t_permission.seq
     *
     * @return t_permission.seq
     */
    public Integer getSeq() {
        return seq;
    }

    /**
     * 顺序
     * t_permission.seq
     *
     * @param seq t_permission.seq
     */
    public void setSeq(Integer seq) {
        this.seq = seq;
    }

    /**
     * 权限的级别 1只是功能菜单 2 实际权限
     * t_permission.level
     *
     * @return t_permission.level
     */
    public Integer getLevel() {
        return level;
    }

    /**
     * 权限的级别 1只是功能菜单 2 实际权限
     * t_permission.level
     *
     * @param level t_permission.level
     */
    public void setLevel(Integer level) {
        this.level = level;
    }

    /**
     * 权限路径
     * t_permission.url
     *
     * @return t_permission.url
     */
    public String getUrl() {
        return url;
    }

    /**
     * 权限路径
     * t_permission.url
     *
     * @param url t_permission.url
     */
    public void setUrl(String url) {
        this.url = url == null ? null : url.trim();
    }

    /**
     * 描述
     * t_permission.remark
     *
     * @return t_permission.remark
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 描述
     * t_permission.remark
     *
     * @param remark t_permission.remark
     */
    public void setRemark(String remark) {
        this.remark = remark == null ? null : remark.trim();
    }

    /**
     * 认证编码 例如：user:create 表示拥有创建用户的权限
     * t_permission.authentication
     *
     * @return t_permission.authentication
     */
    public String getAuthentication() {
        return authentication;
    }

    /**
     * 认证编码 例如：user:create 表示拥有创建用户的权限
     * t_permission.authentication
     *
     * @param authentication t_permission.authentication
     */
    public void setAuthentication(String authentication) {
        this.authentication = authentication == null ? null : authentication.trim();
    }

    public List<TPermission> getChildList() {
        return childList;
    }

    public void setChildList(List<TPermission> childList) {
        this.childList = childList;
    }

    /**
     * <p>
     * 排序用的，如果list中包含本类，那么使用Collections.sort()方法，即可按照本方法排序
     * </p>
     *
     * @author 杨阳
     * @since 2017年8月31日17:20:27
     */
    @Override
    public int compareTo(TPermission o) {
        // 直接按钮顺序排序
        return this.seq - o.seq;
    }

    public boolean getIsParent() {
        return isParent;
    }

    public void setIsParent(boolean isParent) {
        this.isParent = isParent;
    }

    public boolean getChecked() {
        return checked;
    }

    public void setChecked(boolean checked) {
        this.checked = checked;
    }
}